package com.im.service.user.service;

import com.im.service.user.model.UserStatusChangeNotifyContent;
import com.im.service.user.model.param.PullFriendOnlineStatusReq;
import com.im.service.user.model.param.PullUserOnlineStatusReq;
import com.im.service.user.model.param.SetUserCustomerStatusReq;
import com.im.service.user.model.param.SubscribeUserOnlineStatusReq;
import com.im.service.user.model.result.UserOnlineStatusResp;

import java.util.Map;

public interface ImUserStatusService {
    /**
     * 处理用户在线状态通知
     *
     * @param content 用户在线状态变更通知内容
     */
    void processUserOnlineStatusNotify(UserStatusChangeNotifyContent content);

    /**
     * 订阅用户在线状态
     *
     * @param req 订阅用户在线状态请求
     */
    void subscribeUserOnlineStatus(SubscribeUserOnlineStatusReq req);

    /**
     * 设置用户客服状态
     *
     * @param req 设置用户客服状态请求
     */
    void setUserCustomerStatus(SetUserCustomerStatusReq req);

    /**
     * 查询好友在线状态
     *
     * @param req 查询好友在线状态请求
     * @return 好友在线状态映射
     */
    Map<String, UserOnlineStatusResp> queryFriendOnlineStatus(PullFriendOnlineStatusReq req);

    /**
     * 查询用户在线状态
     *
     * @param req 查询用户在线状态请求
     * @return 用户在线状态映射
     */
    Map<String, UserOnlineStatusResp> queryUserOnlineStatus(PullUserOnlineStatusReq req);
}

